package com.zhihao.takeaway.common.config;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;

/**
 *   knife4j-配置
 *   配置套路
 *   给方法加注解
 * @ApiOperation 注解给API增加说法说明
 * @ApimplicitParams 用在方法上包含一组方法说明
 * @AplimplicitParam 用来注解给方法入参增加说明
 *
 * 给 ENETITY 加注解
 * @ApiModel 描述一个Model的信息（一般用于请求参数无法使用 @AplimplicitParam 注解进行描述的时候）
 * @ApiModelProperty 描述一个model的属性
 *
 * 访问：http://localhost:8888/springboot/swagger-ui.html
 */
@Configuration
@MapperScan
public class SwaggerConfig {
    @Bean
    public Docket exampleApi(){

        return new Docket(DocumentationType.SWAGGER_2)
                .groupName("例子")
                .apiInfo(exampleApiInfo())
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.example.demo20.example.controller"))
                .build();
    }
    private ApiInfo exampleApiInfo(){
        return new ApiInfoBuilder()
                .title("例子 example 的所有api")
                .build();
    }
}
